package com.boho.common;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.RandomAccessFile;

/**** 功能描述：创建TXT文件并进行读、写、修改操作*/
public class ReadWriteFile {    
	public static BufferedReader bufread; 
	//指定文件路径和名称
	//private static String path = "D:/suncity.txt";    
	//private static  File filename = new File(path);    
	//private static String readStr ="";
	
	/**创建文本文件. */    
	public static void creatTxtFile( String path) throws IOException{
		File filename = new File(path);   
		if (!filename.exists()) {
			filename.createNewFile();       
			}    
		}
	
	/**读取文本文件. 
	 * @throws IOException */    
	public static String readTxtFile( String path) throws IOException{
		File filename = new File(path);
		if (!filename.exists()) {
			filename.createNewFile();       
		} 
		
		String read;
		String readStr ="";
		FileReader fileread;
		try {
			fileread = new FileReader(filename);            
			bufread = new BufferedReader(fileread);            
		try {     
			while ((read = bufread.readLine()) != null) {                    
				readStr = readStr + read+ "\r\n";                }            
			} catch (IOException e) {                
				// TODO Auto-generated catch block                
				e.printStackTrace();            }        
			} catch (FileNotFoundException e) {            
				// TODO Auto-generated catch block            
				e.printStackTrace();        }        
			System.out.println("文件内容是:"+ "\r\n" + readStr);        
			return readStr;    
	}       
	
	/**写文件.  */    
	public static void writeTxtFile( String path,String newStr) throws IOException{
		File filename = new File(path);
		if (!filename.exists()) {
			filename.createNewFile();       
		} 
		
		//先读取原有文件内容，然后进行写入操作       
		String filein = newStr ;//+ "\r\n" + readStr + "\r\n";       
		RandomAccessFile mm = null;        
		try {            
			mm = new RandomAccessFile(filename, "rw");            
			mm.writeBytes(filein);        
			} catch (IOException e1) {            
				// TODO 自动生成 catch 块            
				e1.printStackTrace();        
				} finally {            
					if (mm != null) {                
					try {
						mm.close();                
					} catch (IOException e2) {                    
						// TODO 自动生成 catch 块                    
						e2.printStackTrace();                
					}            }        }    
		}       
	public static void writeUTFFile(String fileName,String fileBody) throws IOException{
		FileOutputStream fos = null;           
		OutputStreamWriter osw = null;   
		try{
		            
		fos = new FileOutputStream(fileName);               
		osw = new OutputStreamWriter(fos, "UTF-8");               
		osw.write(fileBody);
		osw.close();
		fos.close(); 
		} catch (Exception e) {
		e.printStackTrace();
		}finally{
			if(osw!=null) osw.close();
			if(fos!=null) fos.close();
		}
		       
		}
	
	public static void writeGBKFile(String fileName,String fileBody) throws IOException{
		FileOutputStream fos = null;           
		OutputStreamWriter osw = null;   
		try{
		            
		fos = new FileOutputStream(fileName);               
		osw = new OutputStreamWriter(fos, "GBK");               
		osw.write(fileBody);
		osw.close();
		fos.close(); 
		} catch (Exception e) {
		e.printStackTrace();
		}finally{
			if(osw!=null) osw.close();
			if(fos!=null) fos.close();
		}
		       
		}
	/** 将文件中指定内容的第一行替换为其它内容. 
	 * @param oldStr     
	 * 查找内容     
	 * @param replaceStr
     *替换内容     */    
	public static void replaceTxtByStr(String path,String oldStr,String replaceStr) {       
		String temp = "";        
	try {            
		File file = new File(path);            
		FileInputStream fis = new FileInputStream(file);            
		InputStreamReader isr = new InputStreamReader(fis);            
		BufferedReader br = new BufferedReader(isr);            
		StringBuffer buf = new StringBuffer();            
		// 保存该行前面的内容            
	for (int j = 1; (temp = br.readLine()) != null  && !temp.equals(oldStr); j++) { 
		buf = buf.append(temp);                
		buf = buf.append(System.getProperty("line.separator"));            }            
	// 将内容插入            
	buf = buf.append(replaceStr);            
	// 保存该行后面的内容            
	while ((temp = br.readLine()) != null) {                
		buf = buf.append(System.getProperty("line.separator"));                
		buf = buf.append(temp);            }            
	br.close();            
	FileOutputStream fos = new FileOutputStream(file);            
	PrintWriter pw = new PrintWriter(fos);            
	pw.write(buf.toString().toCharArray());            
	pw.flush();            pw.close();        
	} catch (IOException e) {           
		e.printStackTrace();        }    }
	
	/** main方法测试  */    
	public static void main(String[] s) throws IOException {        
		//ReadWriteFile.creatTxtFile();        
		//ReadWriteFile.readTxtFile();        
		//ReadWriteFile.writeTxtFile("20080808:12:13");
		//        ReadWriteFile.replaceTxtByStr("ken", "zhang");    

	}
}